#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Net4Me 使用示例脚本
展示如何配置和运行Net4Me
"""

import json
import os
import sys
import time
import subprocess


def create_example_config():
    """创建示例配置文件"""
    config = {
        "remote_server": {
            "host": "123.123.123.2",         # B机IP地址
            "port": 22,                      # B机SSH端口
            "username": "root",              # B机用户名
            "password": "",                  # B机密码（可选，推荐使用密钥）
            "private_key_path": "/path/to/private/key",  # 私钥路径（可选）
            "remote_port": 2222              # 在B机上开放的端口，用于访问A机
        },
        "local_machine": {
            "host": "127.0.0.1",             # A机本地SSH服务地址
            "port": 22,                      # A机本地SSH端口
            "username": "user",              # A机用户名
            "password": "",                  # A机密码（可选，推荐使用密钥）
            "private_key_path": "/path/to/local/private/key"  # 私钥路径（可选）
        },
        "tunnel": {
            "reconnect_interval": 30,        # 重连间隔（秒）
            "keepalive_interval": 60,        # 心跳间隔（秒）
            "log_level": "INFO"              # 日志级别
        }
    }
    
    with open('example_config.json', 'w', encoding='utf-8') as f:
        json.dump(config, f, indent=4, ensure_ascii=False)
    
    print("示例配置文件 example_config.json 已创建")
    print("请根据实际情况修改配置文件中的参数")


def run_net4me_client():
    """运行Net4Me客户端"""
    # 检查配置文件是否存在
    if not os.path.exists('example_config.json'):
        print("错误: 找不到配置文件 example_config.json")
        print("请先运行 create_example_config() 创建配置文件")
        return
    
    # 检查主程序是否存在
    if not os.path.exists('main.py'):
        print("错误: 找不到主程序 main.py")
        return
    
    print("正在启动Net4Me客户端...")
    print("使用配置文件: example_config.json")
    print("按 Ctrl+C 停止程序")
    
    try:
        # 运行主程序
        subprocess.run([sys.executable, 'main.py', '--config', 'example_config.json', '--mode', 'client'])
    except KeyboardInterrupt:
        print("\n程序已停止")


def show_connection_instructions():
    """显示连接说明"""
    print("\n" + "="*50)
    print("Net4Me 连接说明")
    print("="*50)
    print("在B机上使用以下命令连接A主机:")
    print("ssh -p 2222 user@123.123.123.2")
    print("\n说明:")
    print("- 2222 是在B机上开放的端口")
    print("- user 是A主机的用户名")
    print("- 123.123.123.2 是B机的公网IP地址")
    print("\n确保:")
    print("1. B机的SSH服务已启动并允许端口转发")
    print("2. 防火墙允许2222端口的入站连接")
    print("3. A主机可以访问B机的22端口")


def main():
    """主函数"""
    print("Net4Me 使用示例")
    print("="*30)
    
    if len(sys.argv) < 2:
        print("用法:")
        print("  python run_example.py create-config    - 创建示例配置文件")
        print("  python run_example.py run-client      - 运行Net4Me客户端")
        print("  python run_example.py connect-info    - 显示连接说明")
        return
    
    command = sys.argv[1]
    
    if command == "create-config":
        create_example_config()
    elif command == "run-client":
        run_net4me_client()
    elif command == "connect-info":
        show_connection_instructions()
    else:
        print(f"未知命令: {command}")
        print("请使用 create-config, run-client 或 connect-info")


if __name__ == "__main__":
    main()